Implementation Details

For symbol construction three internal macros had to be defined. The first, 126, puts a math symbol into a boxed math environment and adjusts spacing. The second, 127, puts a math symbol into a raised and boxed math environment and adjusts spacing. The third, 128, simulates backspacing and overstriking on a typewriter by overlaying two boxes. The quad symbol required special construction in order to generate readable compound symbols such as , , . Full reconstruction was needed only for the <#1551#>APL<#1551#> symbol which is a quad symbol with a short vertical rule. The first version of this symbol used a single quote instead of the vertical rule and looked rather awkward.

One disadvantage of our solution is high TEX memory consumption. We have used 129 commands wherever possible in order to cut down memory usage. Typesetting <#1552#>APL<#1552#> symbols for this text has cost us approximately 6,800 words of TEX memory. Typesetting the workspace of the <#1553#>APL<#1553#> front end (32 functions, 11 variables, 23 pages) has cost a total of 72,800 words of TEX memory with 29,000 words used for the <#1554#>APL<#1554#> symbols. We recommend TEX with 262,141 words of memory.

<#1555#>APL<#1555#> lines are sometimes too long to be printed in a single line. When displaying them on the screen, this problem is usually resolved by wrapping them to the next lines without adding any hyphen. Thus, line breaks can occur anywhere in an <#1556#>APL<#1556#> line, in the middle of <#1557#>APL<#1557#> expressions or even in names. As we use one macro for typesetting each <#1558#>APL<#1558#> character, the normal TEX hyphenation algorithm no longer works.

In the definition of each <#1559#>APL<#1559#> symbol which cannot be used in an identifier the macro 130 is used, which allows breaks with a penalty of --10. To achieve line breaks in the emergency case the preprocessor inserts the macro 131 into names longer than 15 characters at regular intervals.

When typesetting <#1560#>APL<#1560#> arrays (cf. Figure~#atomic#701>), a fixed spaced font is necessary to preserve its shape. We imitate fixed spaced fonts by simply putting a box of fixed width around all characters.

For typesetting bold <#1561#>APL<#1561#> code the special environment <#702#>APLbold<#702#> is defined. It sets 132 and 133 and adjusts the thickness of rules used in symbol construction.